package dialogos;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Hashtable;
import java.util.List;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.border.LineBorder;
import javax.swing.table.DefaultTableModel;

import peluqueria.Peluqueria;

import accesoADatos.AccesoADatos;

import com.toedter.calendar.JDateChooser;

import datos.Caja;
import datos.ProfesionalRealizaServicio;

import java.awt.FlowLayout;

/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class BorrarServiciosDialog extends javax.swing.JDialog {

	/**
	* Auto-generated main method to display this JDialog
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				JFrame frame = new JFrame();
				BorrarServiciosDialog inst = new BorrarServiciosDialog(frame);
				inst.setVisible(true);
			}
		});
	}

	private JLabel lFechaInicio;
	private JDateChooser cFechaInicio;
	private JLabel jLabel1;
	private JDateChooser cFechaFin;
	private JButton bMostrar;
	private JButton bBorrarTodos;
	private JButton bBorrarSeleccion;
	private JScrollPane jScrollPane1;
	private JTable jTable;
	private Hashtable hash= new Hashtable();
	private SimpleDateFormat s = new SimpleDateFormat("dd/MM/yyyy '-' HH':'mm");
	
	public BorrarServiciosDialog(JFrame frame) {
		super(frame, "Borrar Servicios", true);
		initGUI();
	}
	
	private void initGUI() {
		try {
			{
				FlowLayout thisLayout = new FlowLayout();
				thisLayout.setHgap(10);
				thisLayout.setVgap(10);
				getContentPane().setLayout(thisLayout);
			}
			{
				lFechaInicio = new JLabel();
				getContentPane().add(lFechaInicio);
				lFechaInicio.setText("Fecha Inicio");
				lFechaInicio.setHorizontalAlignment(SwingConstants.CENTER);
				lFechaInicio.setForeground(new java.awt.Color(0,0,0));
				lFechaInicio.setPreferredSize(new java.awt.Dimension(85, 20));
				lFechaInicio.setBorder(new LineBorder(new java.awt.Color(0,0,0), 1, true));
			}
			{
				cFechaInicio = new JDateChooser();
				Date fecha = new Date();
				fecha.setDate(1);
				cFechaInicio.setDate(fecha);
				getContentPane().add(cFechaInicio);
				cFechaInicio.setPreferredSize(new java.awt.Dimension(120, 20));
				cFechaInicio.setSize(100, 20);
			}
			{
				jLabel1 = new JLabel();
				getContentPane().add(jLabel1);
				jLabel1.setText("Fecha Fin");
				jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
				jLabel1.setForeground(new java.awt.Color(0,0,0));
				jLabel1.setPreferredSize(new java.awt.Dimension(85, 20));
				jLabel1.setBorder(new LineBorder(new java.awt.Color(0,0,0),1,false));
			}
			{
				cFechaFin = new JDateChooser();
				cFechaFin.setDate(new Date());
				getContentPane().add(cFechaFin);
				cFechaFin.setPreferredSize(new java.awt.Dimension(120, 20));
				cFechaFin.setSize(100, 20);
			}
			{
				bMostrar = new JButton();
				getContentPane().add(bMostrar);
				bMostrar.setText("Mostrar");
				bMostrar.setPreferredSize(new java.awt.Dimension(91, 21));
				bMostrar.setSize(91, 21);
				bMostrar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						bMostrarActionPerformed(evt);
					}
				});
			}
			{
				jScrollPane1 = new JScrollPane();
				getContentPane().add(jScrollPane1);
				jScrollPane1.setPreferredSize(new java.awt.Dimension(540, 240));
				{
					DefaultTableModel modelo = new DefaultTableModel(
							new String[][] {{""}},
							new String[] { "Fecha", "Servicio", "Profesional"});
					jTable = new JTable(modelo);
					jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
					jTable.setRowHeight(20);
					jScrollPane1.setViewportView(jTable);
				}
			}
			{
				bBorrarSeleccion = new JButton();
				getContentPane().add(bBorrarSeleccion);
				bBorrarSeleccion.setText("Borrar Seleccion");
				bBorrarSeleccion.setPreferredSize(new java.awt.Dimension(140, 25));
				bBorrarSeleccion.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						bBorrarSeleccionActionPerformed(evt);
					}
				});
			}
			{
				bBorrarTodos = new JButton();
				getContentPane().add(bBorrarTodos);
				bBorrarTodos.setText("Borrar Todos");
				bBorrarTodos.setPreferredSize(new java.awt.Dimension(140, 25));
				bBorrarTodos.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						bBorrarTodosActionPerformed(evt);
					}
				});
			}
			pack();
			this.setSize(570, 370);
			this.setLocationRelativeTo(null);
			this.setVisible(true);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private void bMostrarActionPerformed(ActionEvent evt) {
		((DefaultTableModel)jTable.getModel()).setRowCount(0);
		hash = new Hashtable();
		List servicios = AccesoADatos.getInstance().getServiciosXRangoFecha(this.cFechaInicio.getDate(), this.cFechaFin.getDate());
		for(int i=0; i<servicios.size(); i++){
			ProfesionalRealizaServicio prs = (ProfesionalRealizaServicio)servicios.get(i);
			hash.put(new Integer(i), prs);
			Vector v = new Vector();
			v.add(s.format(prs.getFecha()));
			v.add(prs.getServicio().getNombre());
			v.add(prs.getProfesional().toString());
			((DefaultTableModel)this.jTable.getModel()).addRow(v);	
		}
	}
	
	private void bBorrarSeleccionActionPerformed(ActionEvent evt) {
		if(this.jTable.getSelectedRow() != -1){
			ProfesionalRealizaServicio prof = (ProfesionalRealizaServicio) this.hash.get(new Integer(this.jTable.getSelectedRow()));
			AccesoADatos.getInstance().BorrarProfesionalRealizaServicio(prof);
			JOptionPane.showMessageDialog(Peluqueria.getInstance().getJFrame(), "El servicio "+prof.getServicio().toString()+" realizado por el profesional "+ prof.getProfesional().toString()+" con fecha y hora "+s.format(prof.getFecha())+" ha sido borrado.", "Servicio borrado", JOptionPane.INFORMATION_MESSAGE);;
			((DefaultTableModel)jTable.getModel()).setRowCount(0);
		}
		else
			JOptionPane.showMessageDialog(Peluqueria.getInstance().getJFrame(), "No ha seleccionado ningun servicio para borrar.", "Seleccione un servicio", JOptionPane.INFORMATION_MESSAGE);
	}
	
	private void bBorrarTodosActionPerformed(ActionEvent evt) {
		for(int i=0; i<hash.size(); i++){
			if(hash.containsKey(new Integer(i))){
				ProfesionalRealizaServicio prof = (ProfesionalRealizaServicio)hash.get(new Integer(i));
				AccesoADatos.getInstance().BorrarProfesionalRealizaServicio(prof);
			}
		}
		this.hash = new Hashtable();
		((DefaultTableModel)jTable.getModel()).setRowCount(0);
	}

}
